#pragma once

#include "Core\NervusSharedHeader.h"

namespace Nervus {
	namespace Render {


		class RenderSystem{
			friend class Core::EngineCore;
			friend class RenderLayout;
		private:
			
		protected:
			bool m2DMode;

			u32 mBufferWidth, mBufferHeight;
			Core::Window* mRenderWnd;
			bool mFullscreen;
		public:
			Camera* mCamera;

			


			RenderSystem();
			virtual ~RenderSystem();

			virtual bool launchRenderSystem() = 0;

			virtual bool toggleFullscreen() = 0;



			virtual void beginRender(f32 = -1.0f)=0;
			virtual void endRender()=0;


			virtual Mesh* createMesh(vector<MeshVertex>, DWORD* = nullptr) = 0;
			virtual Sprite* createSprite(D3DXVECTOR2, Texture*) = 0;

			virtual void shaderOne() = 0;
			virtual void shaderTwo() = 0;

			virtual void enable3D() = 0;
			virtual void enable2D() = 0;

		};
	}
}